#ifndef __HASHMAP_H_
#define __HASHMAP_H_

#include <string>

#define ElementType int
#define HashSize 100    //哈希表大小是定死的，不会改变的

class HashMap
{
public:
    HashMap();
    ~HashMap();
    /* 插入 */
    void Insert(const std::string & key, ElementType value);
    /* 查找 */
    //只能用指针，因为返回的可能是数，也可能是空,但是int无法确定是不是非法值
    ElementType* Get(const std::string & key);  

private:
    struct Node
    {
        //初始化
        Node(const std::string & key,ElementType value)
        {
            this->key = key;
            this->data = value;
            next = nullptr;
        }
        std::string key;    //字符串
        ElementType data;
        Node * next;
    };
    int Hash(const std::string & key);
    Node * array[HashSize]; //指针数组 多个链表构成的数组

};


#endif